package com.skt.domain.VO;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Builder;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 订单详情返回视图对象
 */
@Data
@Builder
@Schema(description = "订单详情信息")
public class OrderDetailVO {

    @Schema(description = "订单ID", example = "5001")
    private Long orderId;

    @Schema(description = "订单编号", example = "R20251125123456")
    private String orderNo;

    @Schema(description = "用户ID", example = "3001")
    private Long userId;

    @Schema(description = "商家ID", example = "2001")
    private Long merchantId;

    @Schema(description = "商家名称", example = "星光礼服馆")
    private String merchantName;

    @Schema(description = "租赁开始日期", example = "2025-12-01")
    private LocalDate startDate;

    @Schema(description = "租赁结束日期", example = "2025-12-06")
    private LocalDate endDate;

    @Schema(description = "租赁天数", example = "5")
    private Integer totalDays;

    @Schema(description = "总金额（租金）", example = "199.00")
    private BigDecimal totalAmount;

    @Schema(description = "押金金额", example = "100.00")
    private BigDecimal depositAmount;

    @Schema(description = "已支付金额", example = "199.00")
    private BigDecimal paidAmount;

    @Schema(description = "退款金额", example = "0.00")
    private BigDecimal refundAmount;

    @Schema(description = "支付状态：0-未支付，1-已支付，2-部分退款，3-全额退款", example = "1")
    private Integer paymentStatus;

    @Schema(description = "订单状态码", example = "1")
    private Integer status;

    @Schema(description = "订单状态描述", example = "待支付")
    private String statusDesc;

    @Schema(description = "备注信息", example = "请尽快发货，谢谢！")
    private String remark;

    @Schema(description = "订单创建时间", example = "2025-11-25T19:30:00")
    private LocalDateTime createdAt;

    @Schema(description = "订单更新时间", example = "2025-11-25T19:35:00")
    private LocalDateTime updatedAt;

    @Schema(description = "支付截止时间", example = "2025-11-25T20:00:00")
    private LocalDateTime payDeadline;

    @Schema(description = "发货时间", example = "2025-11-26T10:00:00")
    private LocalDateTime shipTime;

    @Schema(description = "归还完成时间", example = "2025-12-07T14:00:00")
    private LocalDateTime returnedAt;

    @Schema(description = "操作引导提示", example = "请在30分钟内完成支付，否则订单将自动取消")
    private String nextStepGuide;

    @Schema(description = "订单商品项列表")
    private List<OrderItemVO> items;
}